package com.sojson.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

import com.sojson.constant.Constant;

/**
 * 防止重复提交注解
 * 
 * @author liu
 * @date 2021-08-16
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface ReCommit {

    /** 超时时间(单位: 不设置为毫秒) */
    int expireTime() default Constant.RE_COMMIT_EXPIRE_TIME_DEFAULT;

    /** 时间单位(不设置为毫秒) */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

    /** 存储和删除的Key */
    String key() default "";

    /** 错误信息 */
    String msg();

}